public class test3 {
    //力扣  137  只出现一次的数字II  (所有数出现三次，只有一个出现一次)
    //  这道题可以扩展为(所有数出现n次，只有一个出现一次),只需将sum%=3改成sum%=;
    public int singleNumber(int[] nums) {
        int ret = 0;
        //循环求出每一个比特位的数值
        for(int i = 0;i<32;i++){
            int sum = 0;
            //统计nums中每个数在i位置上累加的值
            for(int x:nums){
                int n = (x>>i) & 1;
                sum+=n;
            }
            //关键
            sum%=3;
            if(sum==1){
                ret |= sum<<i;
            }
            //这一步可以省略，ret本来就是0
            // else{
            //     ret |= -(sum<<i);
            // }
        }
        return ret;
    }
}
